Skip to main content

Recipes & ingredients

Ingredients and recipes are stored as JSON. The default files are:

  • Assets/Knoll_Core/CocktailSystem/IngredientData.json
  • Assets/Knoll_Core/CocktailSystem/RecipeData.json

Display names can have Japanese and English. In-world text follows 表示言語/Language on SystemManager. Recipe matching uses id, not the display name.

Ingredient data​

IngredientData.json is an array. Each ingredient looks like this:

{
"id": "gin",
"name": {
"jp": "ジン",
"en": "Gin"
},
"color": [225, 245, 254],
"hasBubbles": false
}
FieldMeaning
idIngredient ID in lowercase letters and _. Must exactly match recipe ingredient IDs and the match key
name.jpJapanese display name
name.enEnglish display name
colorLiquid color (RGB, 0–255)
hasBubblesWhether it is carbonated

The pack includes these 15 ingredients.

idJapaneseEnglishCarbonated
ginジンGinNo
vodkaウォッカVodkaNo
white_rumホワイトラムWhite RumNo
tequilaテキーラTequilaNo
brandyブランデーBrandyNo
triple_secホワイトキュラソーTriple SecNo
blue_curacaoブルーキュラソーBlue CuracaoNo
peachピーチPeachNo
lime_juiceライムジュースLime JuiceNo
lemon_juiceレモンジュースLemon JuiceNo
orange_juiceオレンジジュースOrange JuiceNo
grapefruit_juiceグレープフルーツジュースGrapefruit JuiceNo
cranberry_juiceクランベリージュースCranberry JuiceNo
soda_waterソーダ水Soda WaterYes
tonic_waterトニックウォーターTonic WaterYes

Changing liquid color or carbonation on a bottle Inspector also writes back to this JSON. id and name are not changed from the bottle.

To add an ingredient, append it to the JSON, duplicate an existing bottle, then pick that liquid name. Up to 4 liquids can be used at once.

Recipe data​

RecipeData.json is an array. Each recipe looks like this:

{
"key": "orange_juice-vodka",
"name": {
"jp": "スクリュードライバー",
"en": "Screwdriver"
},
"ingredients": [
{"id": "vodka", "ratio": 1},
{"id": "orange_juice", "ratio": 3}
],
"color": [255, 180, 90],
"progress": 1.0,
"method": "build"
}
FieldMeaning
keyMatch key. Sort the ingredient id values (Unicode order) and join them with -
name.jpJapanese cocktail name
name.enEnglish cocktail name
ingredientsIngredient id values and ratios. IDs must exactly match the ingredient JSON
colorFinished liquid color (RGB, 0–255)
progressTarget mix amount. 1.0 is fully mixed
methodbuild or shaker
  • Keep recipes to 4 ingredients or fewer.
  • key is the sorted ingredient id values joined together, not the display names. Example: vodka and orange juice → orange_juice-vodka.
  • The order of ingredients does not have to match key. Only key is sorted.
  • id spelling, case, and _ all count as different.
  • Do not delete the fallback recipe at the end of the array (key: failed). Any unmatched mix becomes this result.
  • The tablet dropdown shows every recipe except that last fallback.

Included recipes​

The default RecipeData.json has 45 cocktails plus one failed result.

CocktailMethodIngredients (ratio)
ScrewdriverBuildVodka 1 / Orange Juice 3
BulldogBuildVodka 1 / Grapefruit Juice 3
Vodka TonicBuildVodka 1 / Tonic Water 3
Vodka SodaBuildVodka 1 / Soda Water 3
Cape CodderBuildVodka 1 / Cranberry Juice 3
Vodka GimletShakerVodka 3 / Lime Juice 1
Sea BreezeBuildVodka 1.5 / Grapefruit Juice 2 / Cranberry Juice 2
MadrasBuildVodka 1.5 / Orange Juice 2 / Cranberry Juice 2
Blue LagoonShakerVodka 2 / Blue Curacao 1 / Lemon Juice 1
KamikazeShakerVodka 2 / Triple Sec 1 / Lime Juice 1
BalalaikaShakerVodka 2 / Triple Sec 1 / Lemon Juice 1
CosmopolitanShakerVodka 2 / Triple Sec 1 / Cranberry Juice 2 / Lime Juice 1
Sex on the BeachShakerVodka 1.5 / Peach 1 / Orange Juice 2 / Cranberry Juice 2
Gin and TonicBuildGin 1 / Tonic Water 3
Orange BlossomBuildGin 1 / Orange Juice 3
GimletShakerGin 3 / Lime Juice 1
Gin SourShakerGin 3 / Lemon Juice 1
Gin FizzShakerGin 1.5 / Lemon Juice 1 / Soda Water 3
Gin RickeyBuildGin 1.5 / Lime Juice 1 / Soda Water 3
White LadyShakerGin 2 / Triple Sec 1 / Lemon Juice 1
Peach FizzShakerGin 1 / Peach 1 / Lemon Juice 1 / Soda Water 3
Rum and OrangeBuildWhite Rum 1 / Orange Juice 3
Rum and TonicBuildWhite Rum 1 / Tonic Water 3
DaiquiriShakerWhite Rum 3 / Lime Juice 1
Blue HawaiiShakerWhite Rum 2 / Blue Curacao 1 / Orange Juice 2 / Lemon Juice 1
XYZShakerWhite Rum 2 / Triple Sec 1 / Lemon Juice 1
Peach DaiquiriShakerWhite Rum 2 / Peach 1 / Lime Juice 1
Tequila TonicBuildTequila 1 / Tonic Water 3
Tequila SunriseBuildTequila 1 / Orange Juice 3
Tequila SourShakerTequila 3 / Lemon Juice 1
PalomaBuildTequila 1.5 / Grapefruit Juice 3 / Soda Water 1.5
MargaritaShakerTequila 2 / Triple Sec 1 / Lime Juice 1
Blue MargaritaShakerTequila 2 / Blue Curacao 1 / Lime Juice 1
Peach MargaritaShakerTequila 2 / Peach 1 / Lime Juice 1
Brandy and SodaBuildBrandy 1 / Soda Water 3
Brandy SourShakerBrandy 3 / Lemon Juice 1
SidecarShakerBrandy 2 / Triple Sec 1 / Lemon Juice 1
Blue SidecarShakerBrandy 2 / Blue Curacao 1 / Lemon Juice 1
Fuzzy NavelBuildPeach 1 / Orange Juice 3
Peach SodaBuildPeach 1 / Soda Water 3
Peach TonicBuildPeach 1 / Tonic Water 3
Reggae PunchShakerPeach 1.5 / Orange Juice 2 / Cranberry Juice 2
Blue OrangeBuildBlue Curacao 1 / Orange Juice 3
Blue TonicBuildBlue Curacao 1 / Tonic Water 3
China BlueBuildBlue Curacao 1 / Grapefruit Juice 3 / Tonic Water 2
Failed Cocktail(no match)None

Adding a recipe​

  1. Confirm the ingredient id values exist in IngredientData.json. Add them if they do not.
  2. Insert the new recipe in RecipeData.json before the fallback recipe.
  3. Put ingredient id values and ratios in ingredients.
  4. Build key by sorting the ingredient id values and joining them with -.
  5. Set name.jp and name.en.
  6. Set method to build or shaker.
  7. Confirm SystemManager points at the JSON file you edited.
  8. Enter Play mode and check that the new name appears on the tablet and that making it scores correctly.

Checklist​

If behavior does not match what you expect after editing JSON, check the following.

Ingredient or cocktail names do not appear​

  • JSON structure (arrays, commas, braces) is valid
  • id values in the ingredient JSON and recipe JSON match exactly
  • Both name.jp and name.en are present

The result is Failed Cocktail​

  • key matches the sorted ingredient id values of what you actually poured, joined with - (not display names)
  • No extra ingredients were mixed in (that makes a different key and counts as a miss)
  • The fallback recipe at the end was not deleted

Nothing pours when you tilt a bottle​

  • The cap is open (Use)
  • The bottle's liquid particle reference is still assigned
  • The CocktailSystem Prefab (SystemManager) is in the scene